home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / lisp / eos / sun-eos-debugger.el.z / sun-eos-debugger.el
Encoding:
Text File  |  1998-05-21  |  16.6 KB  |  595 lines

  1. ;;; sun-eos-debugger.el --- Implements the XEmacs/SPARCworks interface
  2.  
  3. ;; Copyright (C) 1995 Sun Microsystems, Inc.
  4.  
  5. ;; Maintainer:    Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  6. ;; Author:      Eduardo Pelegri-Llopart <eduardo.pelegri-llopart@Eng.Sun.COM>
  7.  
  8. ;; Keywords:    SPARCworks EOS Era on SPARCworks Debugger dbx
  9.  
  10. ;;; Commentary:
  11.  
  12. ;; Please send feedback to eduardo.pelegri-llopart@eng.sun.com
  13.  
  14. ;;; Code:
  15.  
  16. (require 'eos-common "sun-eos-common")
  17.  
  18. ;;; =================
  19. ;;; debugger protocol
  20. ;;; =================
  21.  
  22. (defvar eos::current-hollow-arrow nil)
  23. (defvar eos::current-solid-arrow nil)
  24. (defvar eos::current-dbx-proc-id nil
  25.   "TT id for the current dbx")
  26. (defvar eos::current-debugger-clique-id nil
  27.   "Clique_ID for the current debugger/dbx")
  28.  
  29. ;; currentpc.color
  30.  
  31. (defvar eos::currentpc-inst   "/* XPM */
  32. static char * file[] = {
  33. \"16 11 5 1\",
  34. \"     s background c #BDBDBDBDBDBD\",
  35. \".    c #000000000000\",
  36. \"X    c #0000FFFF0000\",
  37. \"o    c #000077770000\",
  38. \"O    c #000044440000\",
  39. \"         .      \",
  40. \"         ..     \",
  41. \"         .X.    \",
  42. \" .........XX.   \",
  43. \" .XXXXXXXXXoX.  \",
  44. \" .Xooooooooooo. \",
  45. \" .oOOOOOOOOoO.  \",
  46. \" .........OO.   \",
  47. \"         .O.    \",
  48. \"         ..     \",
  49. \"         .      \"};")
  50.  
  51. (defvar eos::currentpc-inst-alt
  52.    "/* XPM */
  53. static char * file[] = {
  54. \"16 11 5 1\",
  55. \"     s background c #BDBDBDBDBDBD\",
  56. \".    c #000000000000\",
  57. \"X    c #0000FFFF0000\",
  58. \"o    c #000077770000\",
  59. \"O    c #000044440000\",
  60. \"         .      \",
  61. \"         ..     \",
  62. \"         .X.    \",
  63. \" .........XX.   \",
  64. \" .XXXXXXXXXoX.  \",
  65. \" .Xooooooooooo. \",
  66. \" .oOOOOOOOOoO.  \",
  67. \" .........OO.   \",
  68. \"         .O.    \",
  69. \"         ..   ..\",
  70. \"         .    ..\"};")
  71.  
  72. (defvar eos::visitedpc-inst
  73.    "/* XPM */
  74. static char * file[] ={
  75. \"16 11 5 1\",
  76. \"     s background c #BDBDBDBDBDBD\",
  77. \".    c #000000000000\",
  78. \"X    c #AFAFAFAFAFAF\",
  79. \"o    c #7E7E7E7EA9A9\",
  80. \"O    c #666633339999\",
  81. \"         .      \",
  82. \"         ..     \",
  83. \"         .X.    \",
  84. \" .........XX.   \",
  85. \" .XXXXXXXXXoX.  \",
  86. \" .XooooooooooO. \",
  87. \" .XOOOOOOOOoO.  \",
  88. \" .........OO.   \",
  89. \"         .O.    \",
  90. \"         ..     \",
  91. \"         .      \"};")
  92.  
  93. (defvar eos::visitedpc-inst-alt
  94.    "/* XPM */
  95. static char * file[] ={
  96. \"16 11 5 1\",
  97. \"     s background c #BDBDBDBDBDBD\",
  98. \".    c #000000000000\",
  99. \"X    c #AFAFAFAFAFAF\",
  100. \"o    c #7E7E7E7EA9A9\",
  101. \"O    c #666633339999\",
  102. \"         .      \",
  103. \"         ..     \",
  104. \"         .X.    \",
  105. \" .........XX.   \",
  106. \" .XXXXXXXXXoX.  \",
  107. \" .XooooooooooO. \",
  108. \" .XOOOOOOOOoO.  \",
  109. \" .........OO.   \",
  110. \"         .O.    \",
  111. \"         ..   ..\",
  112. \"         .    ..\"};")
  113.  
  114. (defvar eos::breakpoint-inst
  115.    "/* XPM */
  116. static char * file[] ={
  117. \"11 11 5 1\",
  118. \"     s background c #BDBDBDBDBDBD\",
  119. \".    c #000000000000\",
  120. \"X    c #FFFF66666666\",
  121. \"o    c #FFFF00000000\",
  122. \"O    c #777700000000\",
  123. \"   .....   \",
  124. \"  .XXXXX.  \",
  125. \" .XXoooXX. \",
  126. \".XXoooooXO.\",
  127. \".XoooooooO.\",
  128. \".XoooooooO.\",
  129. \".XoooooooO.\",
  130. \".XXoooooOO.\",
  131. \" .XXoooOO. \",
  132. \"  .OOOOO.  \",
  133. \"   .....   \"};")
  134.  
  135. (defvar eos::breakpoint-inst-alt
  136.    "/* XPM */
  137. static char * file[] ={
  138. \"11 11 5 1\",
  139. \"     s background c #BDBDBDBDBDBD\",
  140. \".    c #000000000000\",
  141. \"X    c #FFFF66666666\",
  142. \"o    c #FFFF00000000\",
  143. \"O    c #777700000000\",
  144. \"   .....   \",
  145. \"  .XXXXX.  \",
  146. \" .XXoooXX. \",
  147. \".XXoooooXO.\",
  148. \".XoooooooO.\",
  149. \".XoooooooO.\",
  150. \".XoooooooO.\",
  151. \".XXoooooOO.\",
  152. \" .XXoooOO. \",
  153. \"  .OOOOO...\",
  154. \"   ..... ..\"};")
  155.  
  156. ;; The TT protocol does not provide enough information to
  157. ;; use the eos::disabledBreakpoint glyph.
  158.  
  159. (defvar eos::disabledBreakpoint-inst
  160.    "/* XPM */
  161. static char * file[] ={
  162. \"11 11 4 1\",
  163. \"     s background c #BDBDBDBDBDBD\",
  164. \".    c #000000000000\",
  165. \"X    c Grey\",
  166. \"O    c Grey80\",
  167. \"   .....   \",
  168. \"  .XXXXX.  \",
  169. \" .XXXXXXX. \",
  170. \".XXXXXXXXO.\",
  171. \".XXXXXXXXO.\",
  172. \".XXXXXXXXO.\",
  173. \".XXXXXXXXO.\",
  174. \".XXXXXXXOO.\",
  175. \" .XXXXXOO. \",
  176. \"  .OOOOO.  \",
  177. \"   .....   \"};")
  178.  
  179. (defvar eos::disabledBreakpoint-inst-alt
  180.    "/* XPM */
  181. static char * file[] ={
  182. \"11 11 4 1\",
  183. \"     s background c #BDBDBDBDBDBD\",
  184. \".    c #000000000000\",
  185. \"X    c Grey\",
  186. \"O    c Grey80\",
  187. \"   .....   \",
  188. \"  .XXXXX.  \",
  189. \" .XXXXXXX. \",
  190. \".XXXXXXXXO.\",
  191. \".XXXXXXXXO.\",
  192. \".XXXXXXXXO.\",
  193. \".XXXXXXXXO.\",
  194. \".XXXXXXXOO.\",
  195. \" .XXXXXOO. \",
  196. \"  .OOOOO...\",
  197. \"   ..... ..\"};")
  198.  
  199. (defvar eos::dbx-pattern-list nil)
  200.  
  201. (defun eos::debugger-startup ()
  202.   ;; Actions to do at startup for eos-debugger.el
  203.   (make-face 'stop-face)
  204.   (make-face 'solid-arrow-face)
  205.   (make-face 'hollow-arrow-face)
  206.   
  207.   (set-face-foreground 'stop-face eos::stop-color)
  208.   (set-face-background 'stop-face 
  209.                (face-background (get-face 'default)))
  210.   (set-face-foreground 'solid-arrow-face eos::solid-arrow-color)
  211.   (set-face-background 'solid-arrow-face 
  212.                (face-background (get-face 'default)))
  213.   (set-face-foreground 'hollow-arrow-face eos::hollow-arrow-color)
  214.   (set-face-background 'hollow-arrow-face 
  215.                (face-background (get-face 'default)))
  216.  
  217.   (setq eos::dbx-pattern-list        ; list of dbx TT patterns
  218.     (eos::create-debugger-patterns))
  219.  
  220. ;; should there be only one stop-face, with different properties depending
  221. ;; on the frame/device?
  222.  
  223.   (eos::annotation-set-inst 'debugger-stop 'x eos::breakpoint-inst [nothing])
  224.   (eos::annotation-set-inst 'debugger-stop 'tty "[S]" [nothing])
  225.   (eos::annotation-set-face 'debugger-stop 'x
  226.                 (get-face 'stop-face) (get-face 'stop-face))
  227.   (eos::annotation-set-face 'debugger-stop 'tty
  228.                 (get-face 'highlight) (get-face 'highlight))
  229.  
  230.   (eos::annotation-set-inst 'debugger-hollow-arrow 'x eos::visitedpc-inst [nothing])
  231.   (eos::annotation-set-inst 'debugger-hollow-arrow 'tty "[]>" [nothing])
  232.   (eos::annotation-set-face 'debugger-hollow-arrow 'x
  233.                 (get-face 'hollow-arrow-face)
  234.                 (get-face 'hollow-arrow-face))
  235.   (eos::annotation-set-face 'debugger-hollow-arrow 'tty
  236.                 (get-face 'highlight) (get-face 'highlight))
  237.  
  238.   (eos::annotation-set-inst 'debugger-solid-arrow 'x eos::currentpc-inst [nothing])
  239.   (eos::annotation-set-inst 'debugger-solid-arrow 'tty "=>" [nothing])
  240.   (eos::annotation-set-face 'debugger-solid-arrow 'x
  241.                 (get-face 'solid-arrow-face)
  242.                 (get-face 'solid-arrow-face))
  243.   (eos::annotation-set-face 'debugger-solid-arrow 'tty
  244.                 (get-face 'highlight) (get-face 'highlight))
  245. )
  246.  
  247. ;; Not yet ready for prime time.
  248.  
  249. (defvar eos::fill-stack-buffer nil
  250.   "when t don't try any stack tracing")
  251.  
  252. (defvar eos::stack-buffer "*Eos Stack*"
  253.   "name of buffer where to log Stack")
  254.  
  255. (defun eos::empty-stack ()
  256.   ;; No valid stack data - e.g. resume/run program -
  257.   (if eos::fill-stack-buffer
  258.       (progn
  259.     (set-buffer (get-buffer-create eos::stack-buffer))
  260.     (toggle-read-only -1)
  261.     (delete-region (point-min) (point-max))
  262.     (toggle-read-only 1)
  263.     )))
  264.  
  265. (defun eos::load-stack ()
  266.   ;; Should send a TT message requesting for the stack information;
  267.   ;; with the real work done in a callback
  268.   (if eos::fill-stack-buffer
  269.       (eos::stack-test 1)))
  270.  
  271. (defun eos::visit-stack (stackpos)
  272.   (if eos::fill-stack-buffer
  273.       (progn
  274.     (eos::empty-stack)
  275.     (eos::stack-test 1)
  276.     )))
  277.  
  278. (defun eos::create-stack-patterns ()
  279.   ;; returns a list of patterns
  280.   (list
  281.    (make-an-observer "SPRO_SPIDER_FRAMES" 'eos::spro_spider_frames)
  282.    ))
  283.  
  284. (defun eos::spro_spider_frames (msg pat)
  285.   ;; We have received a SPRO_SPIDER_FRAMES notice
  286.   (let ((count (get-tooltalk-message-attribute msg 'args_count))
  287.     (i 1))
  288.     (set-buffer (get-buffer-create eos::stack-buffer))
  289.     (toggle-read-only -1)
  290.     (while (< i count)
  291.       ;; optional leading comment
  292.       (if (equal (get-tooltalk-message-attribute msg 'arg_type i)
  293.          "Stack_Info1")
  294.       (progn
  295.         (insert (get-tooltalk-message-attribute msg 'arg_val i))
  296.         (setq i (1+ i))))
  297.       ;; current frame?
  298.       (insert (if (equal (get-tooltalk-message-attribute msg 'arg_ival i)
  299.              "0") "  " "> "))
  300.       (setq i (1+ i))
  301.       (insert (format "[%s] %s%s %s:%s"
  302.               ;; frameno
  303.               (get-tooltalk-message-attribute msg 'arg_ival i)
  304.               ;; funcname
  305.               (get-tooltalk-message-attribute msg 'arg_val (+ i 1))
  306.               ;; funcargs
  307.               (get-tooltalk-message-attribute msg 'arg_val (+ i 2))
  308.                     ;; source
  309.               (get-tooltalk-message-attribute msg 'arg_val (+ i 3))
  310.               ;; line
  311.               (get-tooltalk-message-attribute msg 'arg_val (+ i 4))))
  312.       (setq i (+ i 5))
  313.       (if (equal (get-tooltalk-message-attribute msg 'arg_type i)
  314.          "Stack_Info2")
  315.       (progn
  316.         (insert (get-tooltalk-message-attribute msg 'arg_val i))
  317.         (setq i (1+ i))))
  318.       (insert "\n"))
  319.     (toggle-read-only 1)
  320. ;;    (return-tooltalk-message msg)
  321.     ))
  322.  
  323. (defun eos::spider-stack-callback (msg pat)
  324.   ;; Callback after processing a spider_stack request
  325.   (destroy-tooltalk-message msg)
  326.   )
  327.  
  328. (defmacro eos::stack-tt-args (spider-id clique-id hidden verbose quick starting-index count)
  329.   (` (list
  330.       'class TT_REQUEST
  331.       'address TT_HANDLER
  332.       'scope TT_SESSION
  333.       'handler (, spider-id)
  334.       'op "SPRO_SPIDER_STACK"
  335.       'callback 'eos::spider-stack-callback
  336.       'args (list
  337.          (list 'TT_IN (, clique-id) "Context_ID")
  338.          (list 'TT_IN (, hidden) "Boolean")
  339.          (list 'TT_IN (, verbose) "Boolean")
  340.          (list 'TT_IN (, quick) "Boolean")
  341.          (list 'TT_IN (, starting-index) "int")
  342.          (list 'TT_IN (, count) "int"))
  343.       )))
  344.  
  345. (defun eos::stack-test (starting-index)
  346.   (let ((msg (make-tooltalk-message
  347.           (eos::stack-tt-args eos::current-dbx-proc-id
  348.                   eos::current-debugger-clique-id
  349.                   0    ; hidden
  350.                   1    ; verbose
  351.                   0    ; quick
  352.                   starting-index
  353.                   4    ; count
  354.                   ))))
  355.     (send-tooltalk-message msg)
  356. ;;    (destroy-tooltalk-message msg)
  357.     ))
  358.  
  359. ;; (setq eos::fill-stack-buffer t)
  360. ;; (setq eos::fill-stack-buffer nil)
  361. ;; (setq eos::stack-pattern-list (eos::create-stack-patterns))
  362. ;; (mapcar 'register-tooltalk-pattern eos::stack-pattern-list)
  363. ;; (mapcar 'unregister-tooltalk-pattern eos::stack-pattern-list)
  364. ;; (eos::stack-test 1)
  365.  
  366.  
  367. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  368.  
  369.  
  370. ;;
  371.  
  372. (defun eos::spro_te_eventset (msg pat)
  373.   ;; thread_id trap_id string string filename lineno string string
  374.   (let* ((trap-id
  375.       (get-tooltalk-message-attribute msg 'arg_val 1))
  376.      (filename
  377.       (get-tooltalk-message-attribute msg 'arg_val 4))
  378.      (lineno
  379.       (read (get-tooltalk-message-attribute msg 'arg_ival 5))))
  380.     (eos::add-annotation 'debugger-stop filename lineno trap-id)
  381. ;;    (return-tooltalk-message msg)
  382.     ))
  383.  
  384. (defun eos::spro_te_eventdel (msg pat)
  385.   ;; trap_id string string filename lineno string string
  386.   (let* ((trap-id
  387.       (get-tooltalk-message-attribute msg 'arg_val 0))
  388.      (filename
  389.       (get-tooltalk-message-attribute msg 'arg_val 3))
  390.      (lineno
  391.       (read (get-tooltalk-message-attribute msg 'arg_ival 4))))
  392.     (eos::delete-annotation 'debugger-stop filename lineno trap-id)
  393. ;;    (return-tooltalk-message msg)
  394.     ))
  395.  
  396. (defun eos::spro_te_stopped (msg pat)
  397.   ;; thread_id filename procname lineno filename procname lineno
  398.   (let* ((filename-hollow
  399.       (get-tooltalk-message-attribute msg 'arg_val 1))
  400.      (procname-hollow
  401.       (get-tooltalk-message-attribute msg 'arg_val 2))
  402.      (lineno-hollow
  403.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  404.      (filename-solid
  405.       (get-tooltalk-message-attribute msg 'arg_val 4))
  406.      (lineno-solid
  407.       (read (get-tooltalk-message-attribute msg 'arg_ival 6)))
  408.      )
  409.     (setq eos::current-solid-arrow
  410.       (eos::make-annotation-visible eos::current-solid-arrow
  411.                     filename-solid
  412.                     lineno-solid
  413.                     'debugger-solid-arrow))
  414.     (if (or (not (equal filename-solid filename-hollow))
  415.         (not (equal lineno-solid lineno-hollow)))
  416.     (setq eos::current-hollow-arrow
  417.           (eos::make-annotation-visible eos::current-hollow-arrow
  418.                  filename-hollow
  419.                  lineno-hollow
  420.                  'debugger-hollow-arrow)))
  421. ;;    (return-tooltalk-message msg)
  422.     (eos::load-stack)
  423.     ))
  424.  
  425. ;; Tracking current id's
  426. ;;
  427.  
  428. (defun eos::update-dbx-proc-id (msg)
  429.   (setq eos::current-dbx-proc-id
  430.     (get-tooltalk-message-attribute msg 'sender))
  431.   ;; the following is needed to make toolbar entries be active or not
  432.   ;; I think it is not needed in 19.13
  433.   (eos::select-debugger-frame eos::debugger-frame)
  434.   )
  435.  
  436. (defun eos::update-current-debugger-clique-id (msg)
  437.   (setq eos::current-debugger-clique-id
  438.     (get-tooltalk-message-attribute msg 'arg_val 0))
  439.   )
  440.  
  441. ;;
  442. ;; Updating arrows
  443. ;;
  444.  
  445.  
  446. (defun eos::update-pids (msg)
  447.   (eos::update-dbx-proc-id msg)
  448.   (eos::update-current-debugger-clique-id msg))
  449.  
  450. (defun eos::internal-clear-annotations (stack arrows stops &optional clique)
  451.   (if stack
  452.       (eos::empty-stack))
  453.   (if arrows
  454.       (progn
  455.     (eos::make-annotation-invisible eos::current-hollow-arrow)
  456.     (eos::make-annotation-invisible eos::current-solid-arrow)))
  457.   (if clique
  458.       (progn
  459.     (setq eos::current-debugger-clique-id nil)
  460.     ;; not needed in 19.13?
  461.     (eos::select-debugger-frame eos::debugger-frame)))
  462.   (if stops
  463.       (eos::remove-all-from-annotation-list 'debugger-stop)))
  464.  
  465.  
  466. (defun eos::clear-arrows (msg pat)
  467.   (eos::internal-clear-annotations t t nil)
  468. ;;  (return-tooltalk-message msg)
  469.   )
  470.  
  471. (defun eos::update-clear-stops (msg pat)
  472.   (eos::update-pids msg)
  473.   (eos::internal-clear-annotations t nil t)
  474. ;;  (return-tooltalk-message msg)
  475.   )
  476.  
  477. (defun eos::update-clear-arrows-stops (msg pat)
  478.   (eos::update-pids msg)
  479.   (eos::internal-clear-annotations t t t)
  480. ;;  (return-tooltalk-message msg)
  481.   )
  482.  
  483. (defun eos::clear-arrows-stops (msg pat)
  484.   (let ((this-proc-id
  485.      (get-tooltalk-message-attribute msg 'sender)))
  486.     (if (equal eos::current-dbx-proc-id this-proc-id)
  487.     (progn
  488.       (eos::internal-clear-annotations t t t)
  489.       ;;  (return-tooltalk-message msg)
  490.       ))))
  491.  
  492. ;;
  493.  
  494. ;;
  495.  
  496. (defun eos::spro_detach (msg pat)
  497.   ;; a detach notification has been received. this means dbx/debugger
  498.   ;; is exiting
  499.   (eos::internal-clear-annotations t t t t)
  500.   (eos::dismiss-print-frame))
  501.  
  502. (defun eos::spro_te_location (msg pat)
  503.   ;; thread_id filename procname lineno filename procname lineno
  504.   (let* ((filename-hollow
  505.       (get-tooltalk-message-attribute msg 'arg_val 1))
  506.      (lineno-hollow
  507.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  508.      (filename-solid
  509.       (get-tooltalk-message-attribute msg 'arg_val 4))
  510.      (lineno-solid
  511.       (read (get-tooltalk-message-attribute msg 'arg_ival 6)))
  512.      )
  513.     (setq eos::current-solid-arrow
  514.       (eos::make-annotation-visible eos::current-solid-arrow
  515.                  filename-solid
  516.                  lineno-solid
  517.                  'debugger-solid-arrow))
  518.     (if (or (not (equal filename-solid filename-hollow))
  519.         (not (equal lineno-solid lineno-hollow)))
  520.     (setq eos::current-hollow-arrow
  521.           (eos::make-annotation-visible eos::current-hollow-arrow
  522.                  filename-hollow
  523.                  lineno-hollow
  524.                  'debugger-hollow-arrow)))
  525. ;;    (return-tooltalk-message msg)
  526.     ))
  527.  
  528. (defun eos::spro_te_visit (msg pat)
  529.   ;; thread_id filename procname lineno stackpos
  530.   (let* ((filename
  531.       (get-tooltalk-message-attribute msg 'arg_val 1))
  532.      (procname
  533.       (get-tooltalk-message-attribute msg 'arg_val 2))
  534.      (lineno
  535.       (read (get-tooltalk-message-attribute msg 'arg_ival 3)))
  536.      (stackpos
  537.       (read (get-tooltalk-message-attribute msg 'arg_ival 4)))
  538.      )
  539.     (eos::make-annotation-invisible eos::current-hollow-arrow)
  540.     (if (equal stackpos 1)
  541.     (progn
  542.       (eos::make-annotation-invisible eos::current-solid-arrow)
  543.       (setq eos::current-solid-arrow
  544.         (eos::make-annotation-visible eos::current-solid-arrow
  545.                           filename
  546.                           lineno
  547.                           'debugger-solid-arrow))
  548.       )
  549.       (setq eos::current-hollow-arrow
  550.         (eos::make-annotation-visible eos::current-hollow-arrow
  551.                       filename
  552.                       lineno
  553.                       'debugger-hollow-arrow))
  554.       )
  555. ;;    (return-tooltalk-message msg)
  556.     (eos::visit-stack stackpos)
  557.     ))
  558.  
  559. ;; generate a list of patterns
  560. ;; so it can be registered and unregistered.
  561.  
  562.  
  563. (defun eos::create-debugger-patterns ()
  564.   ;; returns a list of patterns
  565.   (list
  566.    (make-an-observer "SPRO_TE_STOPPED" 'eos::spro_te_stopped)
  567.    (make-an-observer "SPRO_SE_STARTED" 'eos::clear-arrows)
  568.    (make-an-observer "SPRO_TE_STEPPED" 'eos::clear-arrows)
  569.    (make-an-observer "SPRO_TE_CONTINUED" 'eos::clear-arrows)
  570.    (make-an-observer "SPRO_SE_DROPPED" 'eos::clear-arrows-stops)
  571.    (make-an-observer "SPRO_SE_DEBUGGED" 'eos::update-clear-stops)
  572.    (make-an-observer "SPRO_SE_REVIVED" 'eos::update-clear-arrows-stops)
  573.    (make-an-observer "SPRO_SE_ATTACHED" 'eos::update-clear-arrows-stops)
  574.    (make-an-observer "SPRO_SE_GONE" 'eos::clear-arrows)
  575.    (make-an-observer "SPRO_TE_LOCATION" 'eos::spro_te_location)
  576.    (make-an-observer "SPRO_TE_VISIT" 'eos::spro_te_visit)
  577.    (make-an-observer "SPRO_TE_EVENTSET" 'eos::spro_te_eventset)
  578.    (make-an-observer "SPRO_TE_EVENTDEL" 'eos::spro_te_eventdel)
  579.    (make-an-observer "SPRO_DETACH" 'eos::spro_detach)
  580.    ))
  581.  
  582. (defun eos::register-debugger-patterns ()
  583.   ;; register all dbx patterns
  584.   (mapcar 'register-tooltalk-pattern eos::dbx-pattern-list)
  585.   (eos::register-debugger-extra-patterns))
  586.  
  587. (defun eos::unregister-debugger-patterns ()
  588.   ;; unregister all dbx patterns
  589.   (mapcar 'unregister-tooltalk-pattern eos::dbx-pattern-list)
  590.   (eos::unregister-debugger-extra-patterns))
  591.  
  592. (provide 'eos-debugger)
  593.  
  594. ;;; sun-eos-debugger.el ends here
  595.